/*
 * Copyright 2025 The JA-SIG Collaborative. All rights reserved.
 * distributed with this file and available online at
 */
package com.lap.auth.application.header;

import com.lap.auth.application.header.assembler.HeaderAssembler;
import com.lap.auth.application.header.command.CreateHeaderCmd;
import com.lap.auth.domain.header.Header;
import com.lap.auth.domain.header.repository.HeaderRepository;
import com.lap.context.starter.handler.UserHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * 列表头应用服务层
 *
 * <ol>
 *   <li>不做业务规则，只做技术规则（加密/解密是技术实现，业务不关注）
 *   <li>取数，赋值，对象转换在这层执行
 *   <li>命名有规范，动词+领域名字
 *   <li>如查询比较多，建议分开领域QueryAppService,如:分页查询，分页查询返回关联字段
 * </ol>
 */
@RequiredArgsConstructor
@Service
public class HeaderAppService {

  private final HeaderAssembler headerAssembler;
  private final HeaderRepository headerRepository;

  public Header queryHeadersByCode(String code) {
    return headerRepository.findByUserIdAndCode(UserHandler.getUserId(), code);
  }

  public void createHeader(CreateHeaderCmd cmd) {
    Header header = headerAssembler.toDomain(UserHandler.getUserId(), cmd);
    headerRepository.save(header);
  }
}
